<!doctype html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta name="description" content="coinfaces">

        <title>category tech in coinfaces</title>

    <link rel="stylesheet" href="../../theme/css/style.css">
    <link rel="stylesheet" href="../../theme/css/pygments.css">



</head>

<body>
    <div class="content">
<h1>tech</h1>        <table class="posts">
            <tr><th>博文</th><th>分类</th><th>日期</th></tr>
<tr>
    <td class="post-title" title="在一台旧电脑上部署了一些服务，这些服务是通过端口区分的，想改成nginx反向代理并且用域名区分，这就需要解决域名解析的问题。编辑hosts文件是一种方案，但这种方案并不贴切，因为这些域名只在这个局域网中有用，一旦离开了这个局域网，这些hosts文件的记录就失去了意义。另外这种方案也比较麻烦，每一台需要访问服务的设备都需要修改hosts文件，而且对于有的移动设备来说，这是不可能实现的任务。最佳的解决方案是配置一台DNS服务器，接下来还需要通知每一台设备使用该DNS服务，这个工作是DHCP服务器来做的，如果路由器的DHCP服务允许指定一台其局域网内的DNS服务器，事情会变得简单一些，但不幸的是这也没能实现。 于是需要同时配置DNS服务和DHCP服务，好在有一个软件提供了现成的解决方案，那就是dnsmasq。接下来就介绍如何在一台树莓派（Raspbian Jessie）上用dnsmasq部署DNS和DHCP服务。为了方便叙述，这里假设局域网内默认网关（也就是路由器）的IP是192.168.0.1，上游DNS服务器（ISP网络接入设备）的IP地址是192.168.1.1，而树莓派的地址是192.168.0.100。 这里涉及到的一些软件的package名称为dnsmasq、openresolv。 配置DNS服务 dnsmasq需要一台上游的DNS服务器来解析它不知道的域名，该上游服务器的IP地址在/etc/resolv …"><a href="../../posts/raspi-as-dns-and-dhcp-server/">树莓派DNS和DHCP服务器</a></td>
    <td class="post-meta"><a href="../../categories/tech/">tech</a></td>
    <td class="post-meta">2020-12-14</td>
</tr><tr>
    <td class="post-title" title="如下面的代码所示：Python中定义实例方法时第一个参数是实例对象，而调用实例方法时则不需要传这个参数。因为从定义到调用，中间的某个步骤将实例对象和实例方法的第一个参数绑定了起来，这种绑定遵循哪些规则？本文试图通过一些试验来探讨这个问题。 class Foo(object): def spam(self, a): print(&#39;{}, {}&#39;.format(self.__class__.__name__, a)) foo = Foo() foo.spam(1) # Foo, 1 规则1、只能绑定类属性 Python中万物皆对象，类也不例外，在类的代码块中定义的变量和函数自动变成类对象的属性。既然只是属性，也可以直接通过属性赋值的形式定义，如下面的代码所示： class Foo(object): pass def spam(self, a): print(&#39;{}, {}&#39;.format(self.__class__.__name__, a)) foo …"><a href="../../posts/discover-python-bound-method/">探讨Python的绑定方法</a></td>
    <td class="post-meta"><a href="../../categories/tech/">tech</a></td>
    <td class="post-meta">2020-11-29</td>
</tr><tr>
    <td class="post-title" title="在类Unix操作系统中，服务器的负载（Server Load）反映了系统中在运行和等待中的任务数量的统计值，通常显示过去1分钟、5分钟和15分钟这3个时间窗口的统计值（uptime、top、htop）。 在Linux系统中，这个数值反映了正在运行的以及在CPU和IO等待队列中的线程数量（其它操作系统可能只统计了进程的数量，或者没有计算IO等待队列中的任务数量）。在Linux中运行同样数量的IO密集任务时的系统负载，很容易超过运行同样数量的计算密集的任务时的系统负载，就是因为Linux把IO等待队列中的任务纳入了负载统计。 多CPU的情况下，服务器的负载是所有CPU的负载之和，因此要除以CPU数量才能估计平均每个CPU的负载是多少。 负载的统计采用了权重系数按指数衰减的滑动平均统计方式，其包含了从系统启动以来所有数据的计算结果，只是越早的数据的权重越小。假设统计窗口为T，从时间t-T到当前时间t这段时间的数据约占1-1/e（约63%）的权重，t-T之前的数据约占1/e（约37%）的权重，开机时间t越长，权重占比越接近这些数值。 这种统计方式最大的好处是，当前系统负载是原系统负载和当前采样值的加权平均，而权重是统计窗口T、开机时间t …"><a href="../../posts/server-load/">服务器负载</a></td>
    <td class="post-meta"><a href="../../categories/tech/">tech</a></td>
    <td class="post-meta">2020-03-01</td>
</tr><tr>
    <td class="post-title" title="JavaScript类型化数组 使用JavaScript类型化数组可以方便地操作二进制数据，它分为两层，数据缓存和数据视图，数据缓存（ArrayBuffer）用于储存数据，但不负责数据读写，读写数据需要通过创建数据视图来实现，类型化数组就是数据视图的一种。 数据缓存和数据视图的关系如下： let buffer = new ArrayBuffer(16); buffer.length; // 16 let int32View = new Int32Array(buffer); int32View.length; // 4 let int16View = new Int16Array(buffer); int16View.length; // 8 很多操作二进制数据的API用到了类型化数组 文件操作：FileReader.prototype.readAsArrayBuffer() AJAX：XMLHttpRequest.prototype.send() 图像操作：ImageData.data File和Blob File和 …"><a href="../../posts/handling-binary-data-using-javascript/">JavaScript二进制数据处理</a></td>
    <td class="post-meta"><a href="../../categories/tech/">tech</a></td>
    <td class="post-meta">2020-02-28</td>
</tr><tr>
    <td class="post-title" title="该笔记基于RxJS 6 基础概念 RxJS Primer介绍了RxJS中常见概念和基本用法。 Demystifying RxJS Observable介绍了RxJS Observable的概念模型和简单实现。简单地说，RxJS Observable本质上是一个函数，接受Observer作为其参数，当其被调用时，它调用Observer的next、error和complete方法处理数据，最后用类封装出API。这个模型有助于理解Observable为什么默认是“冷的”、“懒的”。 // 举例：根据此思想实现的`of`函数 interface IObserver { next: (data: any) =&gt; void error: (error: Error) =&gt; void complete: () =&gt; void } type IPartialObserver = Partial&lt;IObserver&gt;; type ICleanupLogic = () =&gt; void type …"><a href="../../posts/rxjs-understandings/">RxJS学习笔记</a></td>
    <td class="post-meta"><a href="../../categories/tech/">tech</a></td>
    <td class="post-meta">2019-12-02</td>
</tr><tr>
    <td class="post-title" title="安装 wordpress（LAMP） 在 Debian 9 amd64 上测试成功。 安装和配置 LAMP MySQL 输入以下命令安装 mysql-server： sudo apt-get install mysql-server 安装完成后，运行以下命令进行安全设置： sudo mysql_secure_installation 以 root 身份启动 mysql 命令行： sudo mysql -u root -p 创建和设置 wordpress 数据库和及其用户（替换 &lt;&gt; 中的内容）： CREATE DATABASE &lt;DB_NAME&gt; DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; CREATE USER &#34;&lt;DB_USER&gt;&#34;@&#34;localhost&#34; IDENTIFIED …"><a href="../../posts/install-wordpress-lamp/">安装 wordpress（LAMP）</a></td>
    <td class="post-meta"><a href="../../categories/tech/">tech</a></td>
    <td class="post-meta">2019-06-09</td>
</tr><tr>
    <td class="post-title" title="为 Quasar 项目添加 TypeScript 支持"><a href="../../posts/add-typescript-support-to-quasar-project/">为 Quasar 项目添加 TypeScript 支持</a></td>
    <td class="post-meta"><a href="../../categories/tech/">tech</a></td>
    <td class="post-meta">2019-06-04</td>
</tr><tr>
    <td class="post-title" title="numpy数据类型和结构体的一些概念"><a href="../../posts/numpy_data_type/">numpy数据结构</a></td>
    <td class="post-meta"><a href="../../categories/tech/">tech</a></td>
    <td class="post-meta">2017-02-03</td>
</tr><tr>
    <td class="post-title" title="理解numpy.meshgrid中的两种索引方式：笛卡尔坐标和矩阵坐标"><a href="../../posts/cartesian-and-matrix-grid-in-numpy-meshgrid/">numpy.meshgrid中的笛卡尔坐标和矩阵坐标</a></td>
    <td class="post-meta"><a href="../../categories/tech/">tech</a></td>
    <td class="post-meta">2016-11-20</td>
</tr><tr>
    <td class="post-title" title="零宽度空白字符对用户使用的影响"><a href="../../posts/the-zero-width-space/">零宽度空白字符</a></td>
    <td class="post-meta"><a href="../../categories/tech/">tech</a></td>
    <td class="post-meta">2016-11-05</td>
</tr>
        </table>

    <div class="pagination">
        <span class="pagination-left">
        </span>
        <span>
            Posts
                in tech
        </span>
        &middot;
        <span>Page 1 / 4</span>
        <span class="pagination-right">
                <a href="../../categories/tech/index2.html">Older posts &rarr;</a>
        </span>
    </div>
    </div>
<nav class="nav sidebar">
    <div class="siteinfo">
        <div class="sitename"><a href="../..">coinfaces</a></div>
        <div class="tagline">Another Side of Life</div>
    </div>

        <a href="../../categories/">categories</a>
        <a href="../..">&larr; Home</a>
</nav><footer class="footer">
    <span>
        &copy; jpli &middot;
        under <a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/">CC-BY-SA 4.0</a>
    </span>
    |
    <span>
        Powered by:
        <a href="http://blog.getpelican.com/">Pelican</a>
    </span>
</footer></body>
</html>